package com.rambler.fileupload.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.rambler.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 文件信息实体类，表示系统中存储的文件元信息
 */
@EqualsAndHashCode(callSuper = true)
@TableName("sys_file_info")
@Accessors(chain = true)
@Data
public class SysFileInfo extends BaseEntity {

    /**
     * 文件唯一标识（UUID或Hash）
     */
    @TableField("file_key")
    private String fileKey;

    /**
     * 原始文件名
     */
    @TableField("original_file_name")
    private String originalFileName;

    /**
     * 文件后缀，如jpg、png
     */
    @TableField("file_suffix")
    private String fileSuffix;

    /**
     * 文件大小（单位:字节）
     */
    @TableField("file_size")
    private Long fileSize;

    /**
     * 内容类型（MIME）
     */
    @TableField("content_type")
    private String contentType;

    /**
     * 存储类型（local, oss, minio, s3 等）
     */
    @TableField("storage_type")
    private String storageType;

    /**
     * 存储路径（或对象存储key）
     */
    @TableField("storage_path")
    private String storagePath;

    /**
     * 访问URL（CDN或直链）
     */
    @TableField("url")
    private String url;

    /**
     * 文件MD5（做去重）
     */
    @TableField("md5")
    private String md5;

    /**
     * 文件SHA1（可选，多级校验）
     */
    @TableField("sha1")
    private String sha1;

    /**
     * 文件状态（1:正常 0:已删除 2:处理中）
     */
    @TableField("status")
    private Integer status;

    /**
     * 是否公开访问（1:是 0:否）
     */
    @TableField("is_public")
    private Integer isPublic;

    /**
     * 业务类型（比如头像、合同、文档等）
     */
    @TableField("biz_type")
    private String bizType;

    /**
     * 额外信息（如缩略图、OCR结果、后期可扩展）
     */
    @TableField("extra_info")
    private String extraInfo;

    /**
     * 过期时间（可用于定期清理）
     */
    @TableField("expire_time")
    private java.util.Date expireTime;

}
